/**
 * 
 */
package logica.colecciones;

import java.io.Serializable;
import java.util.Hashtable;
//import java.util.*;
import java.util.Iterator;
import logica.clases.Pais;
import logica.clases.Jugador;
import java.io.Serializable;
/**
 * @author pity
 *
 */
public class Mapa implements Serializable{
	private Hashtable<Integer,Pais> Paises;
//	private int posicion = 1; //Iniciamos el hash en 1 
	private final static long serialVersionUID = 1;
	/**
	 * 
	 */

	public Mapa() {		
		Paises = new Hashtable <Integer,Pais>(); 
	}	
	
	public Mapa(Hashtable<Integer,Pais> paises){
		Paises = paises;
	}
	
	public void insert(Pais pais){
		Paises.put(pais.getNumero(), pais);
//		posicion++;
	}
	
	public boolean member (Pais pais) {
		return Paises.containsValue(pais);
		}
	
	public Pais find(Integer codigo){
		return Paises.get(codigo);
		}
	
	public void delete(Integer codigo){
		Paises.remove(codigo);
	}
	
	public boolean esVacio(){
		return Paises.isEmpty();
		}
	
	public boolean paisDelJugador(Integer codPais, int codJugador){
		boolean pertenece = false;
		Pais pais = find(codPais);
		if (pais.getJugador().getNumero() == codJugador)
			pertenece = true;
		return pertenece;
	}
	
	public int cantPaises(){
		return Paises.size();
	}
	
	public String obtenerPais(int codigo){
		return Paises.get(codigo).getNombre();
	}
	
	public Integer obtenerCodPais(String nombre){
		Iterator <Pais> iter = Paises.values().iterator();
		int numero = 0;
		boolean encontre = false;
		while (iter.hasNext() && !encontre){
			Pais pais = iter.next();
			if (pais.getNombre().equals(nombre)){
				numero = pais.getNumero();
				encontre = true;
			}
		}
		return numero;				
	}
	
	public int obtenerCantFichasPais(int codigo){
		return Paises.get(codigo).getCantFichas();
	}

	public void agregarCantFichas(int codPDest, int cantFichas) {
		Paises.get(codPDest).agregarCantFichas(cantFichas);
	}
	
	public void quitarCantFichas(int codPDest, int cantFichas) {
		Paises.get(codPDest).quitarFicha(cantFichas);
	}
	                                  
	public Mapa copiarMapa(){
		Mapa aux = new Mapa();
		Iterator <Pais> iter = Paises.values().iterator();
		while (iter.hasNext()){
			Pais pais = iter.next();
			aux.insert(pais);
		}
		return aux;
	}
}
